/*
GeorgeLib
Camera.h
Under MIT License
*/

#ifndef __CAMERA_H__
#define __CAMERA_H__

#include "stdafx.h"
#include "vec3.h"

namespace GeorgeLib
{
	class DLLEXPORT Camera
	{
		// Use this class in your update/idle function
		// This class only works in a game loop
		// Camera cam;
		// cam.Fly(2);
		// cam.Update();

	public:
		Camera(void);					// Constructor
		Camera(vec3 Pos);				// Constructor : with an initial position
		Camera(vec3 Pos, vec3 Dir);		// Constructor : with an initial position and direction
		~Camera(void);					// Destructor

		vec3	pos;	// position
		vec3	dir;	// direction vector
		vec3	right;	// right vector
		vec3	up;		// up vector

		float	max_speed;	// limits camera movement speed

		void	Update(void);
		void	Reset(void);

		void	Pitch(float theta);
		void	Yaw(float theta);
		void	Roll(float theta);

		void	Walk(float delta);
		void	Strafe(float delta);
		void	Fly(float delta);
	};
} // namespace GeorgeLib

#endif // __CAMERA_H__